﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.Odbc;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form

    {
        //CONSTANTES
        //String conexion = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\anasilviagonzales\Documents\Inventario IT\ControlEquipoIT.accdb;Persist Security Info=False;";
        String conexion = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\apolo\DATABASES\Control de Equipo\ControlEquipoIT.accdb;Persist Security Info=False;";
        String filtroC = "*";
        String filtroU = "*";
        String filtroE = "*";
        String FiltroG = "*";
        String FEEquipo = "*";
        String FEEtiqueta= "*";
        String FEPrecio= "*";
        String FEEstado= "*";
        String FEObservaciones = "*";
        String FEUbicacion = "*";
        String FEEncargado = "*";
        Boolean editado = false;
        List<int> editedRow=new List<int>();
        String original;
        int currenX, currentY;
       

        //METODOS

        //Revisa la categoria
        public Boolean revisaCategoria()
        {
            if (comboCategoria.SelectedIndex == -1)
            {
                MessageBox.Show("Elija una categoría");
                return true;
            }
            else
                return false;

        }

        //Revisa Identificado
        public Boolean revisaIdentificado()
        {
            if(comboIdentificado.SelectedIndex==-1)
            {
                MessageBox.Show("Indique si el artículo esta identificado por una etiqueta o no");
                    return true;
            }
            else
                return false;
        }

        //Revisa Equipo
        public Boolean revisaEquipo()
        {
            if (textBoxEquipo.Text == "")
            {
                MessageBox.Show("No puede dejar en blanco Equipo");
                return true;
            }
            else
                return false;
        }

        //Validar la información
        public Boolean revisa()
        {
            if ((revisaCategoria()) || (revisaIdentificado()) || (revisaEquipo()))
                return false;
            else
                return true;
        }

        //Genera la etiqueta del artículo
        public String generaEtiqueta(int categoria,String anio)
        {
            String extra;
            String etiqueta;

            if (categoria < 9)
                etiqueta = anio.Substring(2, 2) + "-0" + (categoria + 1) + "-";
            else
                etiqueta = anio.Substring(2, 2) + "-" + (categoria + 1) + "-";

            extra = numeroArticulo();
            if (extra != "")
            {
                if (guardaNuevo(extra))
                {
                    etiqueta = etiqueta + extra;
                }
                else
                    etiqueta = "";
            }
            else
                etiqueta = "";

            return etiqueta;
        }

        //Obtiene el número de artículo que toca
        public String numeroArticulo()
        {

            String etiqueta = "";
            
            OleDbConnection connect = new OleDbConnection();
            connect.ConnectionString = conexion;
            connect.Open();

            OleDbCommand command = new OleDbCommand();
            OleDbDataReader reader;
            command.Connection = connect;

            switch (comboCategoria.SelectedIndex)
            {
                case 0:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Computo'";
                    break;
                case 1:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Perifericos'";
                    break;
                case 2:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'UPS'";
                    break;
                case 3:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Impresiones'";
                    break;
                case 4:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Camaras'";
                    break;
                case 5:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Almacenamiento'";
                    break;
                case 6:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Audiovisual'";
                    break;
                case 7:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Networking'";
                    break;
                case 8:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Software'";
                    break;
                case 9:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Componentes'";
                    break;
                case 10:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Seguridad'";
                    break;
                case 11:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Manuales'";
                    break;
                case 12:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Cables'";
                    break;
                case 13:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Otros'";
                    break;
                default:
                    command.CommandText = "SELECT * FROM Categorias WHERE Nombre LIKE 'Computo'";
                    break;
            }
            
            try
            {
                reader = command.ExecuteReader();
                reader.Read();
                etiqueta = reader[2].ToString();
                //MessageBox.Show(reader.ToString());
                while (etiqueta.Length < 5)
                    etiqueta = "0" + etiqueta;

            }
            catch
            {
                MessageBox.Show("Error al obtener la etiqueta");
            }

            connect.Close();

            return etiqueta;

        }

        //Guarda el nuevo número de artículo
        public Boolean guardaNuevo(String etiqueta)
        {

            OleDbConnection connect = new OleDbConnection();
            connect.ConnectionString = conexion;
            connect.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connect;

            int nuevo = Convert.ToInt32(etiqueta);
            nuevo += 1;

            command.CommandText = "UPDATE Categorias SET Ultima='" + nuevo + "' WHERE Nombre LIKE '" + comboCategoria.SelectedItem.ToString() + "'";

            try
            {
                command.ExecuteNonQuery();
                connect.Close();
                return true;
            }
            catch
            {
                MessageBox.Show("Error al intentar escribir en la Base de Datos");
                connect.Close();
                return false;
            }
            
        }


        //Limpia todos los inputs
        public void borra()
        {
            textBoxEncargado.Text = "";
            textBoxEquipo.Text = "";
            textBoxEstado.Text = "";
            textBoxObservaciones.Text = "";
            textBoxPrecio.Text = "";
            textBoxUbicacion.Text = "";
            comboCategoria.SelectedIndex = -1;
            comboIdentificado.SelectedIndex = -1;
        }

        //Llena el combobox con todas las cateogorias disponibles
        public void getCategorias()
        {

            OleDbConnection connect = new OleDbConnection();
            connect.ConnectionString = conexion;
            connect.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connect;
            OleDbDataReader reader; 

            

            comboFCategoria.Items.Clear();
            comboFCategoria.Items.Add("Todas");

            command.CommandText = "SELECT DISTINCT Nombre, Id FROM Categorias ORDER BY Id";

            try
            {
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    comboFCategoria.Items.Add(reader[0].ToString());
                }

            }
            catch
            {
                MessageBox.Show("Error en la conexión");
            }

            connect.Close();
            

        }

        //Llena el combobox con todas las ubicaciones ingresadas
        public void getUbicacion()
        {

            OleDbConnection connect = new OleDbConnection();
            connect.ConnectionString = conexion;
            connect.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connect;
            OleDbDataReader reader;



            comboFUbicacion.Items.Clear();
            comboFUbicacion.Items.Add("Todas");

            command.CommandText = "SELECT DISTINCT Ubicacion FROM Equipo";

            try
            {
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    if(comboFUbicacion.Items.Contains(reader[0].ToString().ToUpper())==false)
                        comboFUbicacion.Items.Add(reader[0].ToString().ToUpper());
                }

            }
            catch
            {
                MessageBox.Show("Error en la conexión");
            }

            connect.Close();

        }

        //Llena el combobox con todos los encargados ingresados
        public void getEncargado()
        {

            OleDbConnection connect = new OleDbConnection();
            connect.ConnectionString = conexion;
            connect.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connect;
            OleDbDataReader reader;



            comboFEncargado.Items.Clear();
            comboFEncargado.Items.Add("Todas");

            command.CommandText = "SELECT DISTINCT Encargado FROM Equipo";

            try
            {
                reader = command.ExecuteReader();
                while (reader.Read())
                {
                    if (comboFEncargado.Items.Contains(reader[0].ToString().ToUpper()) == false)
                        comboFEncargado.Items.Add(reader[0].ToString().ToUpper());
                }

            }
            catch
            {
                MessageBox.Show("Error en la conexión");
            }

            connect.Close();

        }

        //Enable de los textBox dependiendo de los checkBox chequeados
        public void enableTexts()
        {
            if (checkBoxTodos.Checked)
            {
                textTodos.Enabled = true;
                textEtiqueta.Enabled = false;
                textPrecio.Enabled = false;
                textEstado.Enabled = false;
                textObservaciones.Enabled = false;
                textUbicacion.Enabled = false;
                textEncargado.Enabled = false;
            }
            else
            {
                textTodos.Enabled = false;
                if (checkBoxEquipo.Checked)
                    textEquipo.Enabled = true;
                else
                    textEquipo.Enabled = false
;
                if (checkBoxEtiqueta.Checked)
                    textEtiqueta.Enabled = true;
                else
                    textEtiqueta.Enabled = false;
                if (checkBoxPrecio.Checked)
                    textPrecio.Enabled = true;
                else
                    textPrecio.Enabled = false;
                if (checkBoxEstado.Checked)
                    textEstado.Enabled = true;
                else
                    textEstado.Enabled = false;
                if (checkBoxObservaciones.Checked)
                    textObservaciones.Enabled = true;
                else
                    textObservaciones.Enabled = false;
                if (checkBoxUbicacion.Checked)
                    textUbicacion.Enabled = true;
                else
                    textUbicacion.Enabled = false;
                if (checkBoxEncargado.Checked)
                    textEncargado.Enabled = true;
                else
                    textEncargado.Enabled = false;
            }
        }

        //Construye la instrucción para filtrar por la categoria
        public String filtroCategoria()
        {
            String resp="*";

            if (comboFCategoria.SelectedIndex > 0)
                resp = "'%-" + String.Format("{0:00}", comboFCategoria.SelectedIndex) + "-%'";
          
            return resp;

        }

        //Construye la instrucción para filtrar por la ubicación
        public String filtroUbicacion()
        {
            String resp = "*";

            if (comboFUbicacion.SelectedIndex > 0)
                resp = "'" + comboFUbicacion.SelectedItem.ToString() + "'";

            return resp;

        }

        //Construye la instrucción para filtrar por el encargado
        public String filtroEncargado()
        {
            String resp = "*";

            if (comboFEncargado.SelectedIndex > 0)
                resp = "'" + comboFEncargado.SelectedItem.ToString() + "'";

            return resp;

        }

        //Construye la instrucción para el filtro especifico del equipo
        public String filtroEEquipo()
        {
            String resp = "*";

            if (checkBoxTodos.Checked)
            {
                if(textTodos.Text.Length>0)
                    resp = "'%" + textTodos.Text + "%'";
            }
            else
            {
                if ((textEquipo.Enabled) && (textEquipo.Text.Length > 0))
                    resp = "'%" + textEquipo.Text + "%'";
            }

            return resp;
        }

        //Construye la instrucción para el filtro especifico de la etiqueta
        public String filtroEEtiqueta()
        {
            String resp = "*";

            if (checkBoxTodos.Checked)
            {
                if (textTodos.Text.Length > 0)
                    resp = "'%" + textTodos.Text + "%'";
            }
            else
            {
                if ((textEtiqueta.Enabled) && (textEtiqueta.Text.Length > 0))
                    resp = "'%" + textEtiqueta.Text + "%'";
            }

            return resp;
        }

        //Construye la instrucción para el filtro especifico del precio
        public String filtroEPrecio()
        {
            String resp = "*";

            if (checkBoxTodos.Checked)
            {
                if (textTodos.Text.Length > 0)
                    resp = "'%" + textTodos.Text + "%'";
            }
            else
            {
                if ((textPrecio.Enabled) && (textPrecio.Text.Length > 0))
                    resp = "'%" + textPrecio.Text + "%'";
            }

            return resp;
        }

        //Construye la instrucción para el filtro especifico del estado
        public String filtroEEstado()
        {
            String resp = "*";

            if (checkBoxTodos.Checked)
            {
                if (textTodos.Text.Length > 0)
                    resp = "'%" + textTodos.Text + "%'";
            }
            else
            {
                if ((textEstado.Enabled) && (textEstado.Text.Length > 0))
                    resp = "'%" + textEstado.Text + "%'";
            }

            return resp;
        }

        //Construye la instrucción para el filtro especifico de las observaciones
        public String filtroEObservaciones()
        {
            String resp = "*";

            if (checkBoxTodos.Checked)
            {
                if (textTodos.Text.Length > 0)
                    resp = "'%" + textTodos.Text + "%'";
            }
            else
            {
                if ((textObservaciones.Enabled) && (textObservaciones.Text.Length > 0))
                    resp = "'%" + textObservaciones.Text + "%'";
            }

            return resp;
        }

        //Construye la instrucción para el filtro especifico de la ubicación
        public String filtroEUbicacion()
        {
            String resp = "*";

            if (checkBoxTodos.Checked)
            {
                if (textTodos.Text.Length > 0)
                    resp = "'%" + textTodos.Text + "%'";
            }
            else
            {
                if ((textUbicacion.Enabled) && (textUbicacion.Text.Length > 0))
                    resp = "'%" + textUbicacion.Text + "%'";
            }

            return resp;
        }

        //Construye la instrucción para el filtro especifico del encargado
        public String filtroEEncargado()
        {
            String resp = "*";

            if (checkBoxTodos.Checked)
            {
                if (textTodos.Text.Length > 0)
                    resp = "'%" + textTodos.Text + "%'";
            }
            else
            {
                if ((textEncargado.Enabled) && (textEncargado.Text.Length > 0))
                    resp = "'%" + textEncargado.Text + "%'";
            }

            return resp;
        }

        //Filtro general de Ubicación, Encargado y Categoría
        public void filtra()
        {
            String cond = "";
            OleDbConnection connect = new OleDbConnection();
            connect.ConnectionString = conexion;
            connect.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connect;
            OleDbDataReader reader;

            dataGridView1.RowCount = 0;

            if (!filtroC.Equals("*"))
                cond = "(" + filtroC + ")";

            if (!filtroU.Equals("*"))
            {
                if (cond.Length > 0)
                    cond += "AND (" + filtroU + ")";
                else
                    cond = "(" + filtroU + ")";
            }

            if (!filtroE.Equals("*"))
            {
                if (cond.Length > 0)
                    cond += "AND (" + filtroE + ")";
                else
                    cond = "(" + filtroE + ")";
            }

            command.CommandText = "SELECT * FROM Equipo";
            if (cond.Length > 0)
                command.CommandText += " WHERE " + cond;

            FiltroG = command.CommandText;
            reader = command.ExecuteReader();

            while (reader.Read())
            {
                dataGridView1.Rows.Add();
                dataGridView1.Rows[count() - 1].Cells[0].Value = reader[1].ToString();
                dataGridView1.Rows[count() - 1].Cells[1].Value = reader[3].ToString();
                dataGridView1.Rows[count() - 1].Cells[2].Value = reader[2].ToString();
                dataGridView1.Rows[count() - 1].Cells[3].Value = reader[4].ToString();
                dataGridView1.Rows[count() - 1].Cells[4].Value = reader[5].ToString();
                dataGridView1.Rows[count() - 1].Cells[5].Value = reader[6].ToString();
                dataGridView1.Rows[count() - 1].Cells[6].Value = reader[7].ToString();

            }

            connect.Close();
            
            
        }

        //Cuenta la cantidad de artículos actuales
        public int count()
        {
            int resp = 0;

            resp = dataGridView1.RowCount;

            return resp;

        }

        //Reset de los filtros especificos
        public void midReset()
        {

            FEEquipo = "*";
            FEEtiqueta = "*";
            FEPrecio = "*";
            FEEstado = "*";
            FEObservaciones = "*";
            FEUbicacion = "*";
            FEEncargado = "*";

            checkBoxTodos.Checked = false;
            checkBoxEquipo.Checked = false;
            checkBoxEtiqueta.Checked = false;
            checkBoxPrecio.Checked = false;
            checkBoxEstado.Checked = false;
            checkBoxObservaciones.Checked = false;
            checkBoxUbicacion.Checked = false;
            checkBoxEncargado.Checked = false;

            textEquipo.Text = "";
            textTodos.Text = "";
            textPrecio.Text = "";
            textEstado.Text = "";
            textObservaciones.Text = "";
            textUbicacion.Text = "";
            textEncargado.Text = "";

            textTodos.Enabled = false;
            textEquipo.Enabled = false;
            textEtiqueta.Enabled = false;
            textPrecio.Enabled = false;
            textEstado.Enabled = false;
            textObservaciones.Enabled = false;
            textUbicacion.Enabled = false;
            textEncargado.Enabled = false;

        }

        //Deshabilita todos los filtros para que el usuario pueda editar los artículos
        public void editEnable()
        {
            textTodos.Enabled = false;
            textEquipo.Enabled = false;
            textEtiqueta.Enabled = false;
            textPrecio.Enabled = false;
            textEstado.Enabled = false;
            textObservaciones.Enabled = false;
            textUbicacion.Enabled = false;
            textEncargado.Enabled = false;

            checkBoxTodos.Enabled = false;
            checkBoxEquipo.Enabled = false;
            checkBoxEtiqueta.Enabled = false;
            checkBoxPrecio.Enabled = false;
            checkBoxEstado.Enabled = false;
            checkBoxObservaciones.Enabled = false;
            checkBoxUbicacion.Enabled = false;
            checkBoxEncargado.Enabled = false;

            button3.Enabled = false;
            button4.Enabled = false;

            comboFCategoria.Enabled = false;
            comboFEncargado.Enabled = false;
            comboFUbicacion.Enabled = false;

            foreach (DataGridViewColumn colunm in dataGridView1.Columns)
            {
                colunm.SortMode = DataGridViewColumnSortMode.NotSortable;
            }
          

            Guardar.Enabled = true;
            Cancelar.Enabled = true;
        }

        //Habilita todos los filtros y el usuario ya no puede editar artículos
        public void editNoEnable()
        {
            checkBoxTodos.Enabled = true;
            checkBoxEquipo.Enabled = true;
            checkBoxEtiqueta.Enabled = true;
            checkBoxPrecio.Enabled = true;
            checkBoxEstado.Enabled = true;
            checkBoxObservaciones.Enabled = true;
            checkBoxUbicacion.Enabled = true;
            checkBoxEncargado.Enabled = true;

            button3.Enabled = true;
            button4.Enabled = true;

            comboFCategoria.Enabled = true;
            comboFEncargado.Enabled = true;
            comboFUbicacion.Enabled = true;

            foreach (DataGridViewColumn column in dataGridView1.Columns)
            {
                column.SortMode = DataGridViewColumnSortMode.Automatic;
            }

            Guardar.Enabled = false;
            Cancelar.Enabled = false;

            enableTexts();

        }

        //Realiza el filtro específico de cada campo
        public void filtroEspecifico()
        {
            String cond="";
            String op;
            OleDbConnection connect = new OleDbConnection();
            connect.ConnectionString = conexion;
            connect.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connect;
            OleDbDataReader reader;

            dataGridView1.RowCount = 0;

            if (checkBoxTodos.Checked)
                op = "OR";
            else
                op = "AND";

            if (!FEEquipo.Equals("*"))
                cond = "(" + FEEquipo + ")";

            if (!FEEtiqueta.Equals("*"))
            {
                if (cond.Length > 0)
                    cond += op+" (" + FEEtiqueta + ")";
                else
                    cond = "(" + FEEtiqueta + ")";
            }

            if (!FEPrecio.Equals("*"))
            {
                if (cond.Length > 0)
                    cond += op + " (" + FEPrecio + ")";
                else
                    cond = "(" + FEPrecio  + ")";
            }

            if (!FEEstado.Equals("*"))
            {
                if (cond.Length > 0)
                    cond += op + " (" + FEEstado + ")";
                else
                    cond = "(" + FEEstado + ")";
            }

            if (!FEObservaciones.Equals("*"))
            {
                if (cond.Length > 0)
                    cond += op + " (" + FEObservaciones + ")";
                else
                    cond = "(" + FEObservaciones + ")";
            }

            if (!FEUbicacion.Equals("*"))
            {
                if (cond.Length > 0)
                    cond += op + " (" + FEUbicacion + ")";
                else
                    cond = "(" + FEUbicacion + ")";
            }

            if (!FEEncargado.Equals("*"))
            {
                if (cond.Length > 0)
                    cond += op + " (" + FEEncargado + ")";
                else
                    cond = "(" + FEEncargado + ")";
            }

            command.CommandText = "SELECT * FROM ("+FiltroG+")";
            if (cond.Length > 0)
                command.CommandText += " WHERE " + cond;

            reader = command.ExecuteReader();

            while (reader.Read())
            {
                dataGridView1.Rows.Add();
                dataGridView1.Rows[count() - 1].Cells[0].Value = reader[1].ToString();
                dataGridView1.Rows[count() - 1].Cells[1].Value = reader[3].ToString();
                dataGridView1.Rows[count() - 1].Cells[2].Value = reader[2].ToString();
                dataGridView1.Rows[count() - 1].Cells[3].Value = reader[4].ToString();
                dataGridView1.Rows[count() - 1].Cells[4].Value = reader[5].ToString();
                dataGridView1.Rows[count() - 1].Cells[5].Value = reader[6].ToString();
                dataGridView1.Rows[count() - 1].Cells[6].Value = reader[7].ToString();

            }

            connect.Close();

        }


        public Form1()
        {
            InitializeComponent();
        }


        private void button1_Click(object sender, EventArgs e)
        {

            if (revisa())
            {
                DateTime fecha = DateTime.Now;
                String anio = fecha.Year.ToString();
                String etiqueta = generaEtiqueta(comboCategoria.SelectedIndex, anio);
                String equipo = textBoxEquipo.Text;
                String identificado = comboIdentificado.SelectedItem.ToString();
                String precio = textBoxPrecio.Text;
                String estado = textBoxEstado.Text;
                String observaciones = textBoxObservaciones.Text;
                String ubicacion = textBoxUbicacion.Text;
                String encargado = textBoxEncargado.Text;
                if (etiqueta != "")
                {
                    OleDbConnection connect = new OleDbConnection();
                    connect.ConnectionString = conexion;
                    connect.Open();
                    OleDbCommand command = new OleDbCommand();
                    command.Connection = connect;

                    command.CommandText = "INSERT INTO Equipo (Equipo, Etiqueta, Identificado, Precio, Estado, Observaciones, Ubicacion, Encargado) VALUES ('" + equipo + "', '" + etiqueta + "', '" + identificado + "', '" + precio + "', '" + estado + "', '" + observaciones + "', '" + ubicacion + "', '" + encargado + "')";
                    try
                    {
                        command.ExecuteNonQuery();
                        MessageBox.Show("Artículo guardado con éxito");
                        borra();
                    }
                    catch
                    {
                        MessageBox.Show("Error al guardar el artículo");
                    }
                    connect.Close();

                }

                label9.Text = "ÚLTIMA ETIQUETA: " + etiqueta;

            }

            getEncargado();
            getUbicacion();
            getCategorias();
            

        }

        private void Form1_Load(object sender, EventArgs e)
        {

            OleDbConnection connect = new OleDbConnection();
            connect.ConnectionString = conexion;
            connect.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connect;
            OleDbDataReader reader;

            dataGridView1.RowCount = 0;


            command.CommandText = "SELECT * FROM Equipo";
            FiltroG = command.CommandText;
            reader = command.ExecuteReader();
            while (reader.Read())
            {
                dataGridView1.Rows.Add();
                dataGridView1.Rows[count() - 1].Cells[0].Value = reader[1].ToString();
                dataGridView1.Rows[count() - 1].Cells[1].Value = reader[3].ToString();
                dataGridView1.Rows[count() - 1].Cells[2].Value = reader[2].ToString();
                dataGridView1.Rows[count() - 1].Cells[3].Value = reader[4].ToString();
                dataGridView1.Rows[count() - 1].Cells[4].Value = reader[5].ToString();
                dataGridView1.Rows[count() - 1].Cells[5].Value = reader[6].ToString();
                dataGridView1.Rows[count() - 1].Cells[6].Value = reader[7].ToString();                          

            }

            connect.Close();

            getCategorias();
            getUbicacion();
            getEncargado();

            comboFUbicacion.SelectedIndex = 0;
            comboFCategoria.SelectedIndex = 0;
            comboFEncargado.SelectedIndex = 0;

            label14.Text = "Artículos conincidentes: " + count();
            currenX = 698;
            currentY = 751;

        }

        private void button2_Click(object sender, EventArgs e)
        {

            borra();

        }


        private void tabVer_Enter(object sender, EventArgs e)
        {

            this.tabControl1.Size = new Size(currenX-27, currentY-36);
            this.Size = new Size(currenX, currentY);
            
        }

        private void tabAgregar_Enter(object sender, EventArgs e)
        {

            tabControl1.Size = new Size(this.Size.Width-27, this.Size.Height-36);
            this.Size = new Size(466, 549);


        }

        

        private void Form1_ResizeEnd(object sender, EventArgs e)
        {

            tabControl1.Size = new Size(this.Size.Width - 27, this.Size.Height - 36);
            dataGridView1.Size = new Size(tabControl1.Size.Width - 11, dataGridView1.Size.Height);
            currenX = this.Size.Width;
            currentY = this.Size.Height;
           

           

        }


        private void checkBoxTodos_Click(object sender, EventArgs e)
        {

            if (checkBoxTodos.Checked)
            {
                checkBoxEquipo.Checked = true;
                checkBoxEtiqueta.Checked = true;
                checkBoxPrecio.Checked = true;
                checkBoxEstado.Checked = true;
                checkBoxObservaciones.Checked = true;
                checkBoxUbicacion.Checked = true;
                checkBoxEncargado.Checked = true;
                textTodos.Enabled = true;
                textEquipo.Enabled = false;
                textEtiqueta.Enabled = false;
                textPrecio.Enabled = false;
                textEstado.Enabled = false;
                textObservaciones.Enabled = false;
                textUbicacion.Enabled = false;
                textEncargado.Enabled = false;

            }
            else
            {
                checkBoxEquipo.Checked = false;
                checkBoxEtiqueta.Checked = false;
                checkBoxPrecio.Checked = false;
                checkBoxEstado.Checked = false;
                checkBoxObservaciones.Checked = false;
                checkBoxUbicacion.Checked = false;
                checkBoxEncargado.Checked = false;
                textTodos.Enabled = false;
                textEtiqueta.Enabled = false;
                textPrecio.Enabled = false;
                textEstado.Enabled = false;
                textObservaciones.Enabled = false;
                textUbicacion.Enabled = false;
                textEncargado.Enabled = false;
            }

        }

        private void checkBoxEquipo_Click(object sender, EventArgs e)
        {

            if (checkBoxEquipo.Checked == false)
                checkBoxTodos.Checked = false;

            enableTexts();

            


        }

        private void checkBoxEtiqueta_Click(object sender, EventArgs e)
        {

            if (checkBoxEtiqueta.Checked == false)
                checkBoxTodos.Checked = false;

            enableTexts();

        }

        private void checkBoxPrecio_Click(object sender, EventArgs e)
        {

            if (checkBoxPrecio.Checked == false)
                checkBoxTodos.Checked = false;

            enableTexts();

        }

        private void checkBoxEstado_Click(object sender, EventArgs e)
        {

            if (checkBoxEstado.Checked == false)
                checkBoxTodos.Checked = false;

            enableTexts();

        }

        private void checkBoxObservaciones_Click(object sender, EventArgs e)
        {

            if (checkBoxObservaciones.Checked == false)
                checkBoxTodos.Checked = false;

            enableTexts();

        }

        private void checkBoxUbicacion_Click(object sender, EventArgs e)
        {

            if (checkBoxUbicacion.Checked == false)
                checkBoxTodos.Checked = false;

            enableTexts();

        }

        private void checkBoxEncargado_Click(object sender, EventArgs e)
        {

            if (checkBoxEncargado.Checked == false)
                checkBoxTodos.Checked = false;

            enableTexts();

        }

        private void comboFCategoria_SelectedIndexChanged(object sender, EventArgs e)
        {

            filtroC = filtroCategoria();

            if (!filtroC.Equals("*"))

                filtroC = "Etiqueta like " + filtroC;

            filtra();
            midReset();

            label14.Text = "Artículos conincidentes: " + count();

        }

        private void comboFEncargado_SelectedIndexChanged(object sender, EventArgs e)
        {

            filtroE = filtroEncargado();

            if (!filtroE.Equals("*"))
                filtroE = "Encargado like " + filtroE;

            filtra();
            midReset();

            label14.Text = "Artículos conincidentes: " + count();


        }

        private void comboFUbicacion_SelectedIndexChanged(object sender, EventArgs e)
        {

            filtroU = filtroUbicacion();

            if(!filtroU.Equals("*"))
                filtroU="Ubicacion like "+filtroU;

            filtra();
            midReset();

            label14.Text = "Artículos conincidentes: " + count();

        }

        private void button3_Click(object sender, EventArgs e)
        {

            FEEquipo = filtroEEquipo();
            if (!FEEquipo.Equals("*"))
                FEEquipo = "Equipo like " + FEEquipo;

            FEEtiqueta = filtroEEtiqueta();
            if (!FEEtiqueta.Equals("*"))
                FEEtiqueta = "Etiqueta like " + FEEtiqueta;

            FEPrecio = filtroEPrecio();
            if (!FEPrecio.Equals("*"))
                FEPrecio = "Precio like " + FEPrecio;

            FEEstado = filtroEEstado();
            if (!FEEstado.Equals("*"))
                FEEstado = "Estado like " + FEEstado;

            FEObservaciones = filtroEObservaciones();
            if (!FEObservaciones.Equals("*"))
                FEObservaciones = "Observaciones like " + FEObservaciones;

            FEUbicacion = filtroEUbicacion();
            if (!FEUbicacion.Equals("*"))
                FEUbicacion = "Ubicacion like " + FEUbicacion;

            FEEncargado = filtroEEncargado();
            if (!FEEncargado.Equals("*"))
                FEEncargado = "Encargado like " + FEEncargado;

            filtroEspecifico();

            label14.Text = "Artículos conincidentes: " + count();

        }

        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {

            

            if (checkEdita.Checked)
            {
                editEnable();
                dataGridView1.ReadOnly = false;
                
            }
            else
            {
                editNoEnable();
                dataGridView1.ReadOnly = true;
                editado = false;
                if (editado)
                {
                    if (MessageBox.Show("Desea guardar los cambios?", "seguro", MessageBoxButtons.YesNo) == DialogResult.Yes)
                        Guardar_Click(sender, e);
                }
                editedRow.Clear();
                getCategorias();
                getUbicacion();
                getEncargado();
                filtroEspecifico();
            }


        }

        private void button4_Click(object sender, EventArgs e)
        {

            filtroC = "*";
            filtroU = "*";
            filtroE = "*";
            FiltroG = "*";
            FEEquipo = "*";
            FEEtiqueta = "*";
            FEPrecio = "*";
            FEEstado = "*";
            FEObservaciones = "*";
            FEUbicacion = "*";
            FEEncargado = "*";

            getCategorias();
            getUbicacion();
            getEncargado();

            comboFUbicacion.SelectedIndex = 0;
            comboFCategoria.SelectedIndex = 0;
            comboFEncargado.SelectedIndex = 0;

            checkBoxTodos.Checked = false;
            checkBoxEquipo.Checked = false;
            checkBoxEtiqueta.Checked = false;
            checkBoxPrecio.Checked = false;
            checkBoxEstado.Checked = false;
            checkBoxObservaciones.Checked = false;
            checkBoxUbicacion.Checked = false;
            checkBoxEncargado.Checked = false;

            textEquipo.Text = "";
            textTodos.Text = "";
            textPrecio.Text = "";
            textEstado.Text = "";
            textObservaciones.Text = "";
            textUbicacion.Text = "";
            textEncargado.Text = "";
            
            textTodos.Enabled = false;
            textEquipo.Enabled = false;
            textEtiqueta.Enabled = false;
            textPrecio.Enabled = false;
            textEstado.Enabled = false;
            textObservaciones.Enabled = false;
            textUbicacion.Enabled = false;
            textEncargado.Enabled = false;

            filtra();

            label14.Text = "Artículos conincidentes: " + count();

        }


        private void textTodos_KeyPress(object sender, KeyPressEventArgs e)
        {

            if (e.KeyChar == (char)13)
                button3_Click(sender, e);

        }

        private void textEquipo_Click(object sender, EventArgs e)
        {

        }

        private void textEquipo_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
                button3_Click(sender, e);
        }

        private void textEtiqueta_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
                button3_Click(sender, e);
        }

        private void textPrecio_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
                button3_Click(sender, e);
        }

        private void textEstado_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
                button3_Click(sender, e);
        }

        private void textObservaciones_TextChanged(object sender, EventArgs e)
        {

        }

        private void textObservaciones_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
                button3_Click(sender, e);
        }


        private void textUbicacion_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
                button3_Click(sender, e);
        }

        private void textEncargado_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
                button3_Click(sender, e);
        }

        private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {


            if (dataGridView1.CurrentCell.ColumnIndex == 1)
            {
                MessageBox.Show("No puede editar la etiqueta");
                dataGridView1.CurrentCell.Value = original;

            }
            else
            {
                editedRow.Add(dataGridView1.CurrentCell.RowIndex);
                editado = true;
                Cancelar.Enabled = true;
                Guardar.Enabled = true;
            }




        }

        private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {


            original = dataGridView1.CurrentCell.Value.ToString();

        }

        private void Guardar_Click(object sender, EventArgs e)
        {

            OleDbConnection connect = new OleDbConnection();
            connect.ConnectionString = conexion;
            connect.Open();

            OleDbCommand command = new OleDbCommand();
            command.Connection = connect;

            String id;
            String val1,val2,val3,val4,val5,val6;
            int exito = 0;

            if (editado)
            {
                for (int i = 0; i < editedRow.Count; i++)
                {
                    id =dataGridView1.Rows[editedRow[i]].Cells[1].Value.ToString();
                    val1=dataGridView1.Rows[editedRow[i]].Cells[0].Value.ToString();
                    val2=dataGridView1.Rows[editedRow[i]].Cells[2].Value.ToString();
                    val3=dataGridView1.Rows[editedRow[i]].Cells[3].Value.ToString();
                    val4=dataGridView1.Rows[editedRow[i]].Cells[4].Value.ToString();
                    val5=dataGridView1.Rows[editedRow[i]].Cells[5].Value.ToString();
                    val6=dataGridView1.Rows[editedRow[i]].Cells[6].Value.ToString();
                    command.CommandText = "UPDATE Equipo SET Equipo='" + val1 + "', Precio=" + val2 + ", Estado='" + val3 + "', Observaciones='" + val4 + "', Ubicacion='" + val5 + "'" + ", Encargado='" + val6 + "' WHERE Etiqueta like '" + id + "'";
                    try
                    {
                        command.ExecuteNonQuery();
                        exito++;
                    }
                    catch
                    {
                        MessageBox.Show("No se pudo guardar los cambios del artículo con la etiqueta " + id);
                    }
                
                }
            }

            if (exito == editedRow.Count)
            {
                Guardar.Enabled = false;
                Cancelar.Enabled = false;
                editado = false;
            }

            if(exito==1)
                MessageBox.Show(exito + " artículo guardados con éxito");
            else
                MessageBox.Show(exito + " artículos guardados con éxito");

            connect.Close();


        }

        private void Cancelar_Click(object sender, EventArgs e)
        {

            Guardar.Enabled = false;
            Cancelar.Enabled = false;
            editado = false;
            filtroEspecifico();

        }

        private void tabAgregar_Click(object sender, EventArgs e)
        {

        }

        private void Form1_Resize(object sender, EventArgs e)
        {

            tabControl1.Size = new Size(this.Size.Width - 27, this.Size.Height - 36);
            dataGridView1.Size = new Size(tabControl1.Size.Width - 11, dataGridView1.Size.Height);
            currenX = this.Size.Width;
            currentY = this.Size.Height;

        }
    }
}
